home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / gfx / misc / gnuplot-3.7src.lha / gnuplot-3.7src / gnuplot-3.7.lha / gnuplot-3.7 / docs / doc2texi.pl < prev    next >
Perl Script  |  1998-04-15  |  3KB  |  130 lines

  1. #!/usr/local/bin/perl
  2. #
  3. # $Id: doc2texi.pl,v 1.5 1996/12/08 12:29:25 drd Exp $
  4. #
  5. # doc2texi.pl : Converts Gnuplot .doc files to Texinfo format.
  6. #
  7. # George Ferguson, ferguson@cs.rochester.edu, 11 Feb 1991.
  8. #
  9. # Usage:
  10. #    % doc2texi.pl gnuplot.doc >gnuplot.texinfo
  11. #    % makeinfo --fill-column 80 gnuplot.texinfo
  12. # Creates files "gnuplot.info" and "gnuplot.info-[123]".
  13. #
  14.  
  15. $currentBook = $currentChapter = $currentSection = $currentSubsection = 0;
  16. $verbatim = $table = 0;
  17.  
  18. while (<>) {
  19.     if (/^([1-4]) (.*)$/) {    # section heading
  20.     $table = 0;
  21.     &endVerbatim;
  22.     $numNodes += 1;
  23.     $nodeLevel[$numNodes] = $1;
  24.     $nodeTitle[$numNodes] = $2;
  25.     $nodeText[$numNodes] = "";
  26.     if ($1 == 1) {
  27.         $currentBook = $numNodes;
  28.     } elsif ($1 == 2) {
  29.         $currentChapter = $numNodes;
  30.         $nodeMenu[$currentBook] .= "* $2::\n";
  31.     } elsif ($1 == 3) {
  32.         $currentSection = $numNodes;
  33.         if ($nodeTitle[$currentChapter] eq "set-show") {
  34.         $nodeTitle[$numNodes] = "set $2";    # override
  35.         $nodeMenu[$currentChapter] .= "* set $2::\n";
  36.         } else {
  37.         $nodeMenu[$currentChapter] .= "* $2::\n";
  38.         }
  39.     } elsif ($1 == 4) {
  40.         $currentSubsection = $numNodes;
  41.         $nodeMenu[$currentSection] .= "* $2::\n";
  42.     }
  43.     } elsif (/^\?(.*)$/) {                # index entry
  44.     if ($1 ne "") {
  45.         $nodeText[$numNodes] .= "\@cindex $1\n";
  46.     }
  47.     } elsif (/^\@start table/) {                # start table
  48.     &startVerbatim;
  49.     $table = 1;
  50.     } elsif (/^\@end table/) {                # end table
  51.     $table = 0;
  52.     &endVerbatim;
  53.     } elsif (/^#/ || /^%/) {                # table entry
  54.     next;
  55.     } elsif (/^ ( ?)(.*)$/) {                # text
  56.     if ($1 eq " ") {
  57.         &startVerbatim;
  58.     } else {
  59.         &endVerbatim;
  60.     }
  61.     $text = $2;
  62.     $text =~ s/@/@@/g;
  63.     $text =~ s/{/\@{/g;
  64.     $text =~ s/}/\@}/g;
  65.      $text =~ s/\`([^`]*)\`/\@code{$1}/g;
  66.     $nodeText[$numNodes] .= "$text\n";
  67.     } elsif (/^$/) {                    # blank line
  68.     &endVerbatim;
  69.     $nodeText[$numNodes] .= "\n";
  70.     }
  71. }
  72.  
  73. # Print texinfo header
  74. print "\\input texinfo\n";
  75. print "\@setfilename gnuplot.info\n";
  76. print "\@settitle Gnuplot: An Interactive Plotting Program\n";
  77. print "\n";
  78. print "\@node Top\n";
  79. print "\@top Gnuplot";
  80. print "\n";
  81. print "$nodeText[1]";
  82. print "\@menu\n";
  83. print "$nodeMenu[1]";
  84. print "* General Index::\n";
  85. print "\@end menu\n";
  86. print "\n";
  87.  
  88. # Now output all the nodes
  89. for ($i=2; $i <= $numNodes; $i++) {
  90.     print "\@node $nodeTitle[$i]\n";
  91.     if ($nodeLevel[$i] == 2) {
  92.     print "\@chapter $nodeTitle[$i]\n";
  93.     } elsif ($nodeLevel[$i] == 3) {
  94.     print "\@section $nodeTitle[$i]\n";
  95.     } elsif ($nodeLevel[$i] == 4) {
  96.     print "\@subsection $nodeTitle[$i]\n";
  97.     }
  98.     print "$nodeText[$i]";
  99.     if ($nodeMenu[$i] ne "") {
  100.     print "\@menu\n";
  101.     print $nodeMenu[$i];
  102.     print "\@end menu\n";
  103.     }
  104.     print "\n";
  105. }
  106. # Print texinfo trailer
  107. print "\n";
  108. print "\@node General Index\n";
  109. print "\@appendix General Index\n";
  110. print "\n";
  111. print "\@printindex cp\n";
  112. print "\n";
  113. print "\@bye\n";
  114.  
  115. #######################
  116.  
  117. sub startVerbatim {
  118.     if (!$verbatim) {
  119.     $nodeText[$numNodes] .= "\@example\n";
  120.     $verbatim = 1;
  121.     }
  122. }
  123.  
  124. sub endVerbatim {
  125.     if ($verbatim && !$table) {
  126.     $nodeText[$numNodes] .= "\@end example\n";
  127.     $verbatim = 0;
  128.     }
  129. }
  130.